home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / graphic / rtnews.zip / RTNV3N3 < prev    next >
Text File  |  1992-09-13  |  80KB  |  1,738 lines

  1.  _ __                 ______                         _ __
  2. ' )  )                  /                           ' )  )
  3.  /--' __.  __  ,     --/ __  __.  _. o ____  _,      /  / _  , , , _
  4. /  \_(_/|_/ (_/_    (_/ / (_(_/|_(__<_/ / <_(_)_    /  (_</_(_(_/_/_)_
  5.          /                               /|
  6.         '                               |/
  7.  
  8.             "Light Makes Right"
  9.  
  10.                July 13, 1990
  11.                 Volume 3, Number 3
  12.  
  13. Compiled by Eric Haines, 3D/Eye Inc, 2359 Triphammer Rd, Ithaca, NY 14850
  14.     wrath.cs.cornell.edu!eye!erich or erich@eye.com
  15. All contents are US copyright (c) 1990 by the individual authors
  16. Archive locations: anonymous FTP at cs.uoregon.edu (128.223.4.13), /pub and at
  17.            freedom.graphics.cornell.edu (128.84.247.85), /pub/RTNews
  18. UUCP access: see Vol 3, No 1 or Kory Hamzeh (quad.com!avatar!kory) for info.
  19.  
  20. Contents:
  21.     Introduction
  22.     Ray Tracing Roundtable Announcement
  23.     New People, Address Changes, etc
  24.     Jarke van Wijk Thesis Availability, by Erik Jansen
  25.     New Name For "Distributed Ray Tracing", by Paul Heckbert et al
  26.     NFF Files from Thierry Leconte
  27.     RADIANCE Software Available, by Greg Ward
  28.     Rayshade Updates & SPD Bug, by Craig Kolb
  29.     New Version of Vort Ray Tracer, by David Hook
  30.     Graphics Interface '90, by Eric Haines
  31.     Real3d Review, Haakan "ZAP" Andersson
  32.     Bits From a Letter by David Jevans
  33.     On Antialiasing, & Light and Such, by Haakan "ZAP" Andersson
  34.     ======== USENET cullings follow ========
  35.     Summary: Uniform Random Distribution of Points on Sphere's Surface,
  36.     Marshall Cline
  37.     Ray Tracing & Radiosity, by Frank Vance, Mark VandeWettering
  38.     Ray-Tracing the Torus, by Prem Subrahmanyam, Bob Webber
  39.     Need Help on Superquadrics, by Wayne McCormick, Robert Skinner
  40.     Ray Tracing Penumbral Shadows, Prem Subrahmanyam
  41.     Ray with Bicubic Patch Intersection Problem, Wayne Knapp, John Peterson,
  42.     Lawrence Kesteloot, Mark VandeWettering, Thomas Williams
  43.     Rendering Intersecting Glass Spheres, by John Cristy, Craig Kolb
  44.     DKBPC Raytracer, by Tom Friedel
  45.     New release of IRIT solid modeller, by Gershon Elber
  46.     Easier Use of Ray Tracers, by Philip Colmer, Mark VandeWettering,
  47.     Jack Ritter
  48.     Raytracer Glass, by F. Ken Musgrave, Michael A. Kelly
  49.     Ray Intersection with Grid, by Alasdair Donald Robert McIntyre, Rick Speer
  50.     Database for DBW-Render, by Prem Subrahmanyam
  51.  
  52. -------------------------------------------------------------------------------
  53.  
  54. Introduction
  55.  
  56.     Well, I've been absorbed in quality assurance for the updated version
  57. of the radiosity/ray tracing software we've done with HP.  One thing we've
  58. added is texture mapping, and I definitely feel a sense of deja vu, since my
  59. second graphics project at Cornell was to integrate Rikk Carey's texture
  60. mapping software into the modeller and ray tracer.  Here it is six years later
  61. and we're finally using texture mapping in a commercial product.
  62.  
  63.     I should mention some resources for all of you who have scanners.
  64. Phil Brodatz's "Textures" book (Dover) is definitely recommended - it's mostly
  65. nicely photographed images of sand, gravel, fur, wood, paper, straw matting,
  66. etc etc, perfect for scanning.  Another Dover book, "The Grammar of Ornament"
  67. by Owen Jones, has many colorful designs from a large variety of cultures.
  68. There are also many other Dover collections of designs which are worth looking
  69. over.
  70.  
  71.     A related book that just came out is "Computers, Pattern, Chaos, and
  72. Beauty" by Clifford Pickover (St. Martin's Press).  At first I thought this
  73. was just another fractal book, but there are many other functions and
  74. algorithms explored here.  This book is something like a collection of
  75. "Computer Recreations" columns, and is worth checking out.  One topic mentioned
  76. in the book is creating sea shells by a series of spheres.  This was also
  77. covered in the IEEE CG&A November 1989 article, pages 8-11.  Here's a code
  78. fragment that outputs a series of spheres in NFF (I leave a good view & lights
  79. & colors to you).  Cut the number of steps way down for a rough idea where
  80. the surface is located, and have fun playing with the various numbers and
  81. formulae.
  82.  
  83. #include <stdio.h>
  84. #include <math.h>
  85.  
  86. main(argc,argv)
  87. int argc;  char *argv[];
  88. {
  89. static    double    gamma = 1.0 ;    /* 0.01 to 3 */
  90. static    double    alpha = 1.1 ;    /* > 1 */
  91. static    double    beta = -2.0 ;    /* ~ -2 */
  92. static    int    steps = 600 ;    /* ~number of spheres generated */
  93. static    double    a = 0.15 ;    /* exponent constant */
  94. static    double    k = 1.0 ;    /* relative size */
  95. double    r,x,y,z,rad,angle ;
  96. int    i ;
  97.  
  98.     for ( i = -steps*2/3; i <= steps/3 ; ++i ) {
  99.     angle = 3.0 * 6.0 * M_PI * (double)i / (double)steps ;
  100.     r = k * exp( a * angle ) ;
  101.     x = r * sin( angle ) ;
  102.     y = r * cos( angle ) ;
  103.     /* alternate formula: z = alpha * angle */
  104.     z = beta * r ;
  105.     rad = r / gamma ;
  106.     printf( "s %g %g %g %g\n", x, y, z, rad ) ;
  107.     }
  108. }
  109.  
  110. The interesting thing about the database generated is that it's pretty slow
  111. for most ray tracers (mine included).  There are a lot of spheres in a tiny
  112. cluster at the start of the shell, and the final spheres are large enough that
  113. this tiny cluster is a small part of the environment.  Because the spheres
  114. overlap, each octree node, grid cell, or 5D list is going to be pretty long -
  115. there's a huge amount of depth complexity in this database.  Definitely a
  116. pathological case for most ray tracers, I suspect.
  117.  
  118.     Another book which just came out (as in, I just received my copy
  119. minutes ago) is the new Foley & van Dam (& Feiner & Hughes) "Computer
  120. Graphics:  Principles and Practice" from Addison Wesley.  1174 pages, with a
  121. fair number of color plates.  Definitely a good place to start in on any
  122. topic.  A must have; enough said.
  123.  
  124.     "Graphics Gems", edited by Andrew Glassner, should also be out soon.
  125. Mine's on order, but hasn't arrived in time to review this issue.  Look for it
  126. - it should be of interest.
  127.  
  128.     One more thing.  I recently created a radiosity bibliography which was
  129. posted to USENET.  If you missed it on comp.graphics, it should be available
  130. on freedom.graphics.cornell.edu (see the RT News header) soon.
  131.  
  132. -------------------------------------------------------------------------------
  133.  
  134. Ray Tracing Roundtable Announcement
  135.  
  136.     There will be a "birds of a feather" room for ray tracers to meet and
  137. get to match names to faces at SIGGRAPH.  We'll meet 5:30 to 6:30 pm on
  138. Thursday of SIGGRAPH at some room (see the room listings at registration).
  139. Note that this shouldn't conflict with much, as it's after the sessions and
  140. before the reception.
  141.  
  142.     As befits ray tracers, we're aiming for a minimal, parallel approach
  143. for this year's meeting.  There won't be any roundtable, since last year's
  144. meeting had near a hundred people - just going around the room getting names
  145. and interests took half an hour.  So, there is absolutely no agenda for this
  146. meeting; it's simply a place and time to come and meet others in the field.
  147. Hope to see you there.
  148.  
  149. -------------------------------------------------------------------------------
  150.  
  151. New People, Address Changes, etc
  152.  
  153.  
  154. Haakan 'ZAP' Andersson - efficiency, texturing, speed, etc.
  155. EMT AB
  156. Box 40
  157. 178 00 Ekeroe
  158. SWEDEN
  159. +(46)16 - 964 60
  160. [no e-mail address for now...]
  161.  
  162.    Working with CAD technology, developing add-ons to the popular AutoCAD,
  163. doing RayTracing as a personal midnight oil project, and it might even be
  164. released realsoonow by EMT.  Since my computational powers are limited (PC
  165. style) I enjoy things that make things pretty without bending the clock.  I
  166. love anything that says 3D, but is also interested in other simulations of
  167. real life (AI, sound and speech synthesis etc.).
  168.  
  169. P.S.  I showed "RayTracker" ( My Program ) at an exhibition and some people
  170. thought it was darnfast...even though they were using some renderman stuff
  171. earlier...  my suspicion was that my VERY low resolution led them astray
  172. speed-wise, but I do another nice thing:  I trace every 8ighth pixel (Well,
  173. really every 64th (8x8)) first, so you get a quick look of what's happening
  174. very quickly.  Actually, it's a good timer!  When the scan has done the screen
  175. the FIRST time, a 64th of the image is done, i.e.  the amount of seconds
  176. (minutes) this scan takes, this amount of minutes (hours) will the full image
  177. take, approximately.  That's nice.  Well, that IS all for now.
  178.  
  179. -------
  180.  
  181. Mark A. Cartwright - 3D Modeling, 3D Human Interface, Ray Tracing, Macintosh.
  182. University of Texas
  183. Computation Center
  184. COM 1
  185. Austin, Texas 78712-1110
  186. Phone: (512)-471-3241 ext 306
  187. email: markc@emx.utexas.edu
  188.  
  189. My background is mostly graphics work - with a little Numeric Control thrown
  190. in for good measure.  Prior to my position here at the University I worked at
  191. Byte By Byte here on the Macintosh version of Sculpt 3D.  Modeling and all
  192. that relates to object creation and editing -- and of course ray tracing are
  193. my main areas of interest.
  194.  
  195. --------
  196.  
  197. Pierre Poulin
  198. Imager
  199. Dept. of Computer Science
  200. University of British Columbia
  201. Vancouver, B.C., Canada
  202. V6T 1W5
  203.  
  204. Just in case you might be interested to change it, my new email address is now:
  205.  
  206.     poulin@cs.ubc.ca
  207.  
  208. I followed my supervisor at the University of British Columbia. The DGP
  209. group at Toronto kindly kept me on their system, but I would prefer being
  210. contacted directly rather than each time through Toronto...
  211.  
  212. --------
  213.  
  214. Drew Whitehouse
  215. E-mail:  drw900@csc2.anu.edu.au
  216. Visualization Programmer,               Fax   : (06) 2473425
  217. Australian National University,         Phone : (06) 2495985
  218. Supercomputer Facility.
  219. GPO Box 4, Canberra ACT Australia 2601.
  220.  
  221.    I work at the Australian National University Supercomputer Facility as a
  222. visualization programmer.  My interests are scientific visualization, volume
  223. rendering and raytracing.  Currently I'm keeping myself busy inserting bits
  224. and pieces into the MTV raytracer.  The main thing being some sort of volume
  225. rendering, both for voxel data and Perlin style hypertexture (what I've really
  226. got in mind is a tribble teapot.....  )
  227.  
  228. --------
  229.  
  230. Michael A. Kelly
  231. 3105 Gateway St. #191
  232. Springfield, Oregon  97477
  233. (503) 726-1859 (home)
  234. (503) 342-2277 (work)
  235. mkelly@cs.uoregon.edu
  236.  
  237. Interests: accurate duplication of real-world objects, color, efficiency
  238.  
  239. Current Project:
  240. I am attempting to write a rendering program for the Macintosh II series.
  241. 'Render3D' will be, at least at first, a shareware program.  It is a simple
  242. ray tracer at this point, but by the end of summer it will be considerably
  243. more.  Some of the features I plan to include are:
  244.  
  245.     Accurate surface color definitions using spectral energy distributions
  246.         - color calculated on a wavelength-by-wavelength basis
  247.         (now implemented)
  248.     Radiosity method for diffuse reflections
  249.     Phong and Gouraud shading for polygons
  250.     Support for parametrically defined objects
  251.         (including bicubic surface patches)
  252.     Treat light sources as objects
  253.         any normal object can be treated as a light source
  254.     Texture mapping
  255.     Import and Export several file formats, including RenderMan
  256.     Animation
  257.  
  258. Of course, I probably won't get to all of these before the end of summer, but
  259. I hope to finish the first four or five of them by the beginning of fall term.
  260. (I am currently an undergraduate computer science major at the University of
  261. Oregon, with one year left to go.)
  262.  
  263. --------
  264.  
  265. # Erik Jansen
  266. # Dept of Industrial Design
  267. # Delft University of Technology
  268. # Jaffalaan 9
  269. # 2628 BX Delft
  270. # The Netherlands
  271.  
  272. Erik informs me that the site for a few people has changed:
  273.  
  274. alias    wim_bronsvoort    wim@duticg.tudelft.nl
  275. alias    erik_jansen    fwj@duticg.tudelft.nl
  276. alias    frits_post    frits@duticg.tudelft.nl
  277.  
  278. -------------------------------------------------------------------------------
  279.  
  280. Jarke van Wijk Thesis Availability, by Erik Jansen (fwj@duticg.tudelft.nl)
  281.  
  282. I saw your question about the book of Jarke van Wijk in the [January] issue.
  283. Jack wrote a thesis book which is nicely printed by the Delft University Press.
  284.  
  285. The title is:
  286. "On New Types Of Solid Models and Their Visualization with Ray Tracing".
  287.  
  288. Subjects that are covered:
  289. - translational, rotational sweep; also in TOG 3(3) 223-237
  290. - sphere sweep, also in EG'84 73-82; and in Computers and Graphics 9(3) 283-290
  291. - blending surfaces; comparable with the work of Middletich and Sears, Sigg'85
  292. - bicubic patches for non-rectangular meshes; also in CAGD 3(1) 1-13
  293. - SML, solid modeling language; also in CAD 18(9).
  294.  
  295. There is no discussion in the thesis about efficiency methods (only bounding
  296. boxes).
  297.  
  298. The book can be ordered for Dfl. 36.30 (ca. $20 including send costs) by:
  299. Delft University Press
  300. Stevinweg 1
  301. Delft
  302. The Netherlands
  303. fax: +31-15-781661
  304.  
  305. -------------------------------------------------------------------------------
  306.  
  307. New Name For "Distributed Ray Tracing", by Paul Heckbert et al
  308.  
  309. [If you have more comments, please also send them for publication here. -- EAH]
  310.  
  311. A few weeks ago, I asked the following question of the people on
  312. the Ray Tracing News mailing list:
  313.  
  314.     From ph@spline.Berkeley.EDU Wed Apr 11 18:48:05 1990
  315.  
  316.     This is a survey.  Assuming we could rename "Distributed Ray Tracing",
  317.     what should we call it:
  318.  
  319.     1) Stochastic Ray Tracing
  320.     2) Probabilistic Ray Tracing
  321.     3) Distributed Ray Tracing (old name ok)
  322.     4) other
  323.  
  324. THE RESULTS WERE:
  325.  
  326.    14  stochastic ray tracing
  327.     3  monte carlo ray tracing
  328.     2  distributed ray tracing
  329.     1  probabilistic ray tracing
  330.     1  rob cook ray tracing
  331.  
  332. "Stochastic Ray Tracing" is the clear favorite of those who responded.
  333. Many commented that they've always found the term "distributed ray tracing"
  334. to be a confusing misnomer.  Brian Corrie put it well:
  335.  
  336.     I have a serious problem with the name distributed ray tracing. The
  337.     main reason is the name directly conflicts with the notion of using
  338.     a distributed computer system for ray tracing. Trying to describe
  339.     both of them is a hassle. Because parallel ray tracing is becoming
  340.     quite prominent, this name conflict can be a major pain.
  341.  
  342. The plot thickens, however.  Michael Cohen and Joe Cychosz observed
  343. that one could distribute rays regularly throughout a distribution, or
  344. by some other deterministic algorithm, and most people would still call
  345. it "distributed ray tracing".  Wouldn't the proposed new name
  346. "stochastic ray tracing" then be misleading?
  347.  
  348. I agree.  That's why I've started using the name "distribution ray
  349. tracing".  To me it captures the central idea that you're modeling the
  350. surface properties as numerical parameters each with a probability
  351. distribution instead of a single, specific value; analogous to the
  352. distinction between a random variable and a standard variable.
  353. There are various numerical integration techniques for simulating this
  354. distribution: uniform sampling or stochastic sampling, non-adaptive or
  355. adaptive, etc, but these are implementation details relative to the
  356. main concept, which is that there's a variable in the shading
  357. formula with a probability distribution that necessitates integration.
  358. Another advantage of the name is that it's similar to the old one.
  359.  
  360. Andrew Glassner pointed out that there is another concept in Cook's and
  361. Kajiya's papers that deserves a name, and that concept is that the
  362. stochastic sampling can be done independently in each parameter. Andrew
  363. suggested "simultaneous multidimensional sampling".  Another
  364. possibility that occurs to me is "independent sampling".
  365.  
  366. What do y'all think?
  367.  
  368. What I'd like to know is: why didn't the reviewers of Cook's
  369. 1984 paper scream when he proposed that title?
  370.  
  371. Paul Heckbert
  372. ph@miro.berkeley.edu
  373.  
  374. -------------------------------------------------------------------------------
  375.  
  376. NFF Files from Thierry Leconte
  377.  
  378. [I found some wonderful NFF files at the site irisa.irisa.fr [131.254.2.3] in
  379. the NFF directory.  Particularly good is the Amiga computer model, but
  380. all of them are pretty worthwhile.
  381.  
  382. BowlingPin.nff - guess
  383. amiga.nff - an Amiga 2000 keyboard and computer (no monitor) - very nice
  384. balls.nff - just a scene generated by SPD ball program
  385. crypt.nff - a mysterious crypt (with columns and whatnot)
  386. expresso.nff [sic] - T. Todd Elvins' Utah espresso maker in NFF format
  387. hangglider.nff - a hang glider
  388. jaws.nff - don't be afraid, it's just a nff scene
  389. matchbox.nff - a box of matches and some matches
  390. room.nff - an office with the desk and others things
  391. spirale.nff - a spiral spline thingie
  392. spring.nff - a spring thing
  393. sps7.nff - a bull sps7 computer box
  394. teapot.nff - the mythical one
  395. temple.nff - pseudo-roman pagan temple something
  396. tpotbis.nff - ye olde teapot, with lid ajar
  397. watch.nff - a wristwatch
  398. x29.nff - fighter plane
  399.  
  400. Unfortunately, there are some problems with some databases.  Problems included:
  401.  
  402.     - polygonal patches with normals given as [0,0,0].
  403.     - polygons with no area (usually a triangle with a doubled vertex).
  404.     - inconsistently defined polygons.  The NFF format specifies that you
  405.       should output the polygon vertices in a particular order (counter-
  406.       clockwise when viewed from above in a right-handed coordinate
  407.       system).  I suspect you use double sided polygons so that it does not
  408.       matter.
  409.     - other minor problems.
  410.  
  411. The files I had problems with:
  412.  
  413. amiga.nff - there are a few polygons with no area (doubled vertices).  The
  414.     first is around line 1518 of the file.
  415. jaws.nff - there are tons of polygonal patches with normals of [0,0,0]
  416. room.nff - polygons with [0,0,0] normals, and some no area polygons.  The first
  417.     two polygons in this file are HUGE.  I cannot get the normals per
  418.     vertex to display properly on my system, because some of the vertex
  419.     normals differ inconsistently from the polygon normal (I haven't quite
  420.     figured this out).
  421. spring.nff - the "Shine" and "Transmission" values are switched here, I
  422.     suspect.  Shine is 0, while Kt is 30!  You should definitely fix the
  423.     material setup line here.
  424. temple.nff - no area polygon around line 433.  I can't get the normals to line
  425.     up properly, similar problem to room.nff.
  426. watch.nff - lots of [0,0,0] normals here.
  427. x29.nff - on line 3641 there is an extra vertex - the polygon says it has
  428.     3 vertices, but 4 vertices appear (possibly my file is corrupt).
  429.  
  430.  
  431. Some comments I pasted together from Thierry Leconte
  432. (Thierry.Leconte@irisa.fr), who is the caretaker of the files:
  433.  
  434. In fact I'm only a novice in ray-tracing area.  I work on distributed systems
  435. and parallelism.  But ray-tracers are good applications to test such systems.
  436. Now I work on a modified version of VM_pRay (the parallel ray-tracer of
  437. Didier.Badouel@irisa.fr) which run on our own distributed system (called
  438. GOTHIC).  We are writing a motif based window interface for it and I am trying
  439. to collect as many nff files as I can in order to run nice demos on the Gothic
  440. system.  I have made available most of these files and some utilities (among
  441. others yours) via anonymous ftp from irisa.irisa.fr.  Most of the non
  442. classicals scenes I have come from a scene designer Xavier Bouquin who works
  443. on a amiga with the Scult4D program.  and Philippe.Joubert@irisa.fr has
  444. written a sculpttonff converter.  But if someone knows other converters or
  445. interesting nff files I will be happy to add them to my collection!
  446.  
  447. VM_pRAY (ray tracer) of Didier Badouel is available at the same site.
  448.  
  449. Feel free to use, copy ,modify and distribute these files provided that they
  450. are not use for commercial purpose and that the name of the author is
  451. mentioned.
  452.  
  453. Most of these scenes was made on an amiga with Scult4D (a truly great modeler)
  454. then they have been converted to nff file with sc2nff (a PD converter
  455. available on the same site, same directory in the utils.tar archive).
  456.  
  457. The author of crypt,jaws,matchbox,room,temple,watch is Xavier Bouquin
  458. (email to pjoubert@irisa.fr).
  459.  
  460. teapot, x29 were ftp'ed from cs.uoregon.edu.
  461.  
  462. amiga, hangglider, teapotbis were PD Scult4D files available on a amiga site
  463. archive (will try in the future to collect any PD Scult4D file an convert them
  464. to nff).
  465.  
  466. sps7 was made by hand.
  467.  
  468. balls and spirale - generated by program.
  469.  
  470. -------------------------------------------------------------------------------
  471.  
  472. RADIANCE Software Available, by Greg Ward (greg@hobbes.lbl.gov)
  473.  
  474. For a little over a year now I have been distributing a ray tracing lighting
  475. simulation called RADIANCE through the Sun Academic Software Portfolio.  Since
  476. the software runs on many machines besides the Sun, and not everyone gets the
  477. portfolio as it is, I thought you might be willing to publicize the software
  478. through your rtnews mailing list.
  479.  
  480. RADIANCE was written as a lighting simulation more than a renderer, so it does
  481. not allow some of the tricks that are permitted in other ray tracing programs.
  482. (For example, all light sources fall off as 1/r^2.)  It has some of the nicer
  483. features of advanced renderers, such as textures and bump maps (I've always
  484. argued for calling them patterns and textures, respectively), octree spatial
  485. subdivision, several surface primitives and hierarchical instancing.  It's
  486. main distinction, however, is its ability to calculate diffuse interreflection
  487. like a radiosity calculation.  (See the article by Ward, Rubinstein and Clear
  488. in the 1988 Siggraph proceedings.)
  489.  
  490. The software is free, and comes with all the C source code, but is not
  491. available through anonymous ftp.  We want to keep track of people who have a
  492. copy of the package so that we can send out update announcements, bug fixes
  493. and so forth.  For this reason we also ask that people do not redistribute the
  494. package without written permission (e-mail is fine).
  495.  
  496. Since I am just a mellow Californian who can't handle answering a 24 hour
  497. support hotline, I want to discourage the idly curious, those who just want to
  498. check out another ray tracer, from acquiring this software.  If you are
  499. interested primarily in computer graphics, there are plenty of other ray
  500. tracing programs that do a great job producing attractive imagery.  If, on the
  501. other hand, you are really serious about lighting simulation, this is the
  502. program for you.
  503.  
  504. Summary Description of RADIANCE:
  505.  
  506.     Lighting calculation and image synthesis using advanced ray tracing.
  507.     Scenes are built from polygons, cones, and spheres made of plastic,
  508.     metal, and glass with optional patterns and textures.
  509.  
  510. Detailed Description:
  511.  
  512.     RADIANCE was developed as a research tool for predicting the
  513.     distribution of visible radiation in illuminated spaces.  It takes as
  514.     input a three-dimensional geometric model of the physical environment,
  515.     and produces a map of spectral radiance values in a color image.  The
  516.     technique of ray tracing follows light backwards from the image plane
  517.     to the source(s).  Because it can produce realistic images from a
  518.     simple description, RADIANCE has a wide range of applications in
  519.     graphic arts, lighting design, engineering and architecture.
  520.  
  521.     The reflectance model accurately predicts both diffuse and specular
  522.     interactions, making it a complete simulation applicable to the design
  523.     of unusual electric and day lighting systems.  Scenes are described by
  524.     boundary representations with polygons, spheres and cones.  Materials
  525.     include plastic, metal, glass, and light.  Textures and patterns can
  526.     be described as functions or data.  Additional programs (generators)
  527.     produce descriptions of compound objects, and allow regular
  528.     transformations and hierarchical scene construction.  A 3D editor is
  529.     being developed.
  530.  
  531.     The software package includes some image processing software and
  532.     display programs for X, SunView, and the AED512, and comes with
  533.     converters to Sun rasterfile and Targa formats.  Code is provided for
  534.     writing other drivers, and the list is expected to grow.
  535.  
  536. Interface Description:
  537.  
  538.     The software is well integrated with the UNIX environment.  Many of
  539.     the programs function as filters, with a reasonable degree of
  540.     modularity.  An interactive program provides quick views of the scene,
  541.     useful for debugging and view determination.  Scenes are described in
  542.     a simple ascii format that is easy to edit and program.  Generators
  543.     are provided for boxes, worms, surfaces of revolution, prisms, and
  544.     functional surfaces (eg.  bicubic patches).  A small library of
  545.     patterns and textures is included.  In general, the software is
  546.     sensible but not mouse-based.
  547.  
  548. Overall Goals of Developer:
  549.  
  550.     The primary goal of the program is the accurate simulation of light in
  551.     architectural spaces.  Secondary goals are image synthesis and
  552.     geometric modeling.  Efficiency is an important concern in any ray
  553.     tracing method.
  554.  
  555. Obtaining RADIANCE:
  556.  
  557.     Send a 30+ Mbyte tape cartridge with return envelope and postage to:
  558.  
  559.         Greg Ward
  560.         Lawrence Berkeley Laboratory
  561.         1 Cyclotron Rd., 90-3111
  562.         Berkeley, CA  94720
  563.  
  564. If you have any questions regarding the applicability of this software to your
  565. needs, feel free to call or (preferably) send e-mail to me directly.
  566.  
  567. Sincerely,
  568.  
  569. Greg Ward
  570.  
  571. Lighting Systems Research Group
  572. GJWard@Lbl.Gov
  573. (415) 486-4757
  574.  
  575. -------------------------------------------------------------------------------
  576.  
  577. Rayshade Updates & SPD Bug, by Craig Kolb
  578.  
  579. [from various notes to me]
  580.  
  581. The Rayshade 3.0 ray tracer is now up to patch level 5.  Rayshade 3.1 is
  582. coming along nicely.  It fixes some of the major problems in rayshade, and
  583. adds a bunch of new features.
  584.  
  585. By the way, while playing with the SPD, I ran across a couple of very minor
  586. problems.  In lib.c, you make mention of OUTPUT_POLYGONS, when you really
  587. mean OUTPUT_PATCHES.
  588.  
  589. [I have sent Craig release 2.7 of the SPD package, and it's now available for
  590. FTP from weedeater.math.yale.edu (130.132.23.17).  It has minor typo fixes
  591. (like the above) and clarifications of the NFF, but no code fixes. - EAH]
  592.  
  593. Craig also notes that Przemek Prusinkiewicz's book, "The Algorithmic Beauty
  594. of Plants", will be released at SIGGRAPH this year, complete with lots of
  595. pretty raytraced pictures using Rayshade.  Some of the images generated
  596. were in the March 1990 issue of IEEE CG&A (including the front cover).
  597.  
  598. -------------------------------------------------------------------------------
  599.  
  600. New Version of Vort Ray Tracer, by David Hook (uunet.UU.NET!munnari!dgh)
  601.  
  602. [the following was pieced together from two notes - EAH]
  603.  
  604. I have just installed a new version of the ray tracer in
  605. pub/graphics/vort.tar.Z on munnari.OZ.AU.  It's a bit of an improvement on the
  606. last one, and has some stuff for displaying images as animations on sun's,
  607. PC's, and X11.
  608.  
  609. One thing that may be of interest, one of the guys I work with, one Bernie
  610. Kirby, implemented some marble and wood texturing using in the ray tracer.  He
  611. had the following to say:
  612.  
  613.     It is an implementation of Ken Perlin's noise function as described in
  614.     "Hypertexture, Computer Graphics, Vol 23, No.3, July 1989, pp
  615.     255-256".  Most of the function names are as given in the paper.
  616.     Also, I think that there may be an error in the paper as the given
  617.     formulae of OMEGA would always produce zero if the actual point falls
  618.     on a lattice point.  (ie. GAMMA(i, j, k) .  (u, v, w) = 0).  Anyway,
  619.     I added in a pseudo random value for the noise at each lattice point
  620.     as well as the gradient values (as described in his '85 paper and it
  621.     seems to work.)
  622.  
  623.     The original version (ie.  the one that had zeros at the lattice
  624.     points) produced almost exactly the same effects as displayed in Fig 2
  625.     of J. P. Lewis' paper in SIGRAPH '89 "Algorithms for solid noise
  626.     synthesis".  The changed algorithm still displays some of these
  627.     artifacts (if you really look for them) but no where near as badly as
  628.     in Lewis's paper.
  629.  
  630. The only other things of note are that Vort no longer requires
  631. primitives to be axis-aligned and that most things can have tile patterns
  632. mapped on to them (this includes toruses, although flat pixel files
  633. mapped onto a donut can tend to look a little weird). Some people may find
  634. the mapping functions of some use (although having just got a copy of
  635. "Introduction to Ray-Tracing" I notice most of them are in there, the book
  636. shop slugged me $100 bucks for it, sometimes I don't believe this place...)
  637.  
  638. Regards,
  639. David.
  640.  
  641. PS: we ran your standard rings benchmark at four rays per pixel and it took
  642. two and a half days on a Sun 4 3/90. Is that a record? ( :-) ) Next project
  643. is to speed the mother up...
  644.  
  645. --------
  646.  
  647. [Also, a package called Vogel is also available at munnari - EAH]
  648.  
  649. From Tom Friedel, tpf@jdyx.UUCP:
  650.  
  651. With Vogel you get 3-d transformation, 3-d and 2-d clipping,
  652. perspective, orthogonal views, some patch functions, and back face removal.
  653. I've wanted to build a bigger package on these routines, some sort of
  654. .nff previewer, but haven't had the time.  Good package because you get
  655. device independence with X11, postscript, others.
  656.  
  657. -------------------------------------------------------------------------------
  658.  
  659. Graphics Interface '90, by Eric Haines
  660.  
  661.     An interesting conference/proceedings which often is overlooked is
  662. "Graphics Interface".  This year's conference, held in Halifax, Nova Scotia,
  663. Canada, had quite a few papers on ray tracing.  I particularly liked Don
  664. Mitchell's "Robust Ray Intersection with Interval Arithmetic" paper.  I'm sure
  665. we'll be seeing interval analysis applied to more areas of graphics in the
  666. years ahead, and this is an interesting application of the technique.
  667. Graphics Interface proceedings can be ordered from:  Morgan Kaufmann
  668. Publishers, (415)-965-4081.  What follows is a list of papers that may be of
  669. interest:
  670.  
  671.     Image and Intervisibility Coherence in Rendering
  672.         Joe Marks, Robert Walsh, Jon Christensen and Mark
  673.         Friedell, Harvard U.
  674.  
  675.     Robust Ray Intersection with Interval Arithmetic
  676.         Don P. Mitchell, AT&T Bell Laboratories, Murray Hill
  677.  
  678.     Approximate Ray Tracing
  679.         David E. Dauenhauer and Sudhanshu K. Semwal, U. Colorado
  680.         at Colorado Springs
  681.  
  682.     Octant Priority for Radiosity Image Rendering
  683.         Yigong Wang and Wayne A. Davis, U. Alberta
  684.  
  685.     Exploiting Temporal Coherence in Ray Tracing
  686.         J. Chapman, T. W. Calvert and J. Dill, Simon Fraser U.
  687.  
  688.     A Ray Tracing Method for Illumination Calculation in
  689.     Diffuse-Specular Scenes
  690.         Peter Shirley, U. Illinois at Urbana-Champaign
  691.  
  692.     Voxel Occlusion Testing: A Shadow Determination Accelerator for
  693.     Ray Tracing
  694.         Andrew Woo and John Amanatides, U. Toronto
  695.  
  696.     Some Regularization Problems in Ray Tracing
  697.         John Amanatides and Don Mitchell, AT&T Bell Laboratories,
  698.         Murray Hill
  699.  
  700. -------------------------------------------------------------------------------
  701.  
  702. Real3d Review, Haakan "ZAP" Andersson
  703.  
  704.   I was attending a computer exhibition in Stockholm the other day, and among
  705. all the printers, PC computers and other boring stuff, there were some
  706. bright spots.  In one stand I saw a screen with a checkerboard pattern and a
  707. mirrored sphere on it....  I began to Yawn loudly, but as I was going to leave
  708. a mirrored hand plunged up from the ground and grabbed the sphere, and the
  709. camera made a spin around the whole scene.  It made me interested enough to
  710. enter and look.
  711.  
  712.   REAL-3D is apparently a new (so new it's a RealSoonNow product) from the
  713. icy Finland. It's a raytracing program for the Amiga, and it's darn fast
  714. (for being an Amiga, that is). I talked to the program author and he said he
  715. did NOT use the math coprocessor, and it was all in assembler...(Good Grief)
  716. When discussing efficiency he proudly declared that he had NOT looked at others
  717. for algorithms, because he did not want to be influenced, so he had invented it
  718. all from scratch. He had been programming full-time for four years, and from
  719. what I saw, the result was satisfactory, to say the least.
  720.  
  721.   A beautiful, OSF/Motif-like user interface and a great interactive object
  722. editor that would make Sculpt-Animate 4d go home and hide under a rug. All
  723. objects were arranged in a hierarchy for animating, and materials and textures
  724. could be assigned to whole hierarchy tree branches. He could even do solid
  725. modelling (I saw a cylinder cut out from another before my very eyes) with
  726. different textures in the 'hole' and the piece the hole was cut out of. It
  727. was also one of the few Amiga tracers to support texture mapping, i.e. you
  728. could map any IFF image onto any surface via some different kinds of projective
  729. mapping (Parallel, Ball, Cylinder)
  730.  
  731.   It had a good hybrid between analytic objects (spheres, cylinders, cones and
  732. even hyperbolics (!)) and polygon surfaces. A nice entity was the 'sphere-line'
  733. he used, you simply drew a series of connected lines, and all vertices got
  734. a sphere, and all connecting lines became a cylinder.  [AKA "worms" or "cheese
  735. logs" in other parts of the world - EAH]
  736.  
  737.   Animation support looked quite straight forward, and he made a simple
  738. animation of the Real3d logo being flown through before my very eyes (Though
  739. as a wire frame, but I got the hang of animating).
  740.  
  741.  
  742. SPEED:
  743.  
  744.   Even though the program ran on an Amiga 2000 (14 Mhz clock) it's speed was
  745. rather fast.  Comparing with my own tracer, running on a 386 machine with full
  746. math coprocessor support, his program looked faster..(!)  The wire frame
  747. representations, used for placing cameras an so forth was real-time, and he
  748. traced a hyperbolic with wood texture with a cylindric hole in about a minute.
  749. He also claimed that finding the colors (for the HAM mode in the Amiga) was
  750. half the work.  He said that an early version used Black&White and it was
  751. almost twice as fast...  (bragging?  :-) Upon being asked how it could be that
  752. fast, he said, "Only me and my brother knows how it works..."  then he smiled.
  753. Heaven knows why...?
  754.  
  755.  
  756. Conclusion:
  757.  
  758. REAL3d looks like a speedy hack for the Amiga, and the editor alone makes it a
  759. joy to watch.  I hope this little blond guy from Finland will sell some of
  760. these programs, so he will be able to continue to develop it into something
  761. really nice.
  762.  
  763. [Sorry, I don't have an address for where to get it.  Anyone? - EAH]
  764.  
  765. -------------------------------------------------------------------------------
  766.  
  767. Bits From a Letter by David Jevans
  768.  
  769.     ...As for the Arnaldi paper on "mailboxes" (keeping a ray_id for each
  770. object to avoid multiple intersections), I though that was common knowledge!
  771. Cleary's analysis of ray tracing paper (Visual Computer '88), MacDonald's
  772. paper and my paper (Graphics Interface '89) all mention the technique and
  773. reference the paper.  It's a good thing that you put in the RTN if people
  774. really don't know about it!
  775.  
  776.     Anyway, my recent work has some pretty important results for the ray
  777. tracing community.  Essentially I show that further work in reducing
  778. ray-object intersections is pretty much pointless (we are close to the fastest
  779. possible time anyway).  I'm just writing a section that illustrates that
  780. hierarchies of 3D voxel grids are superior to bounding volume hierarchies (as
  781. if anyone will believe me!  :-)
  782.  
  783. David Jevans @ University of Calgary, Department of Computer Science
  784.            Calgary, Alberta, Canada T2N 1N4
  785. uucp: jevans@cpsc.ucalgary.ca                  vox: 403-220-7685
  786.  
  787. -------------------------------------------------------------------------------
  788.  
  789. On Antialiasing, & Light and Such, by Haakan "ZAP" Andersson (no email)
  790.  
  791. (Disclamier: Since I havn't read all theses about anti-aliasing, this might
  792.  be known already, so all I claim to be my ideas may be not, so the stupidity
  793.  is solely on my part :-)
  794.  
  795.  
  796. When raytracing, instead of having one wiz_bang function trace(ray) that
  797. traces through the entire object list (traversing AHBV's as necessary) and
  798. pinning down the poor bastard of an object blocking our way of light and
  799. shining in our face, you might do one little thingy:
  800.  
  801. Use TWO functions, ONE that traverses the bounding volumes for a ray, building
  802. an object_list of primitive object this ray (might) intersect, and ONE that
  803. does the real object intersection.  i.e. this:
  804.  
  805.     current_list = traverse_abvh(ray);
  806.     pixel = trace_this_list(ray,current_list);
  807.     clear_list(current_list); /* Get rid of it somehow */
  808.  
  809. Why da hek do this?  Well, when anti-aliasing, you will virtually hit the same
  810. object(s) inside each pixel, and the 'slack' around the object vs.  bbox will
  811. allow the 'current_list' to contain all objects this ray hits, and any ray
  812. being very close to this very ray, i.e.  all rays within a single pixel.  So,
  813. when anti-aliasing, simply call 'trace_this_list()' with the same list all
  814. over again, only SLIGHTLY different 'ray's.  Ok, there CAN be wrongies some
  815. places, but since you do this for eye-rays, and _I_say_ that for eye-rays you
  816. should use 2d bounding boxes on screen INSTEAD of real bboxes, you simply let
  817. the 2d bboxes be one pixel bigger than they should be, and viola, each pixel
  818. will always yield AT LEAST the object_list containing all objects to be hit in
  819. this pixel and the neighbouring ones.  Got that?
  820.  
  821. Any flaws?  Well, since current_list() need to be alloced/malloced in some
  822. way, there might be a speed problem.  Another solution is using a static
  823. object list, and KEEPING the bbox traversal code in 'trace_this_list()' but
  824. ALSO having a 'traverse_abvh()' function, used only upon eye-rays when
  825. anti-aliasing is in effect.  The fact that the list 'trace_this_list()' gets
  826. does NOT contain any bboxes once in a while (i.e.  when we supply a list made
  827. by 'traverse_abvh()' instead of the 'full' object list) is not a problem from
  828. that functions point of view.
  829.  
  830. Any flaws NOW?  Well, you might always run out of static storage space.  But
  831. you can always 'realloc()' :-)
  832.  
  833. [Comments:  this has a certain sense to it.  By making a "likely candidate
  834. list" for a pixel you can stop wasting time traversing the darn hierarchy.
  835. You could even sort it by the box hit distance, so that when you get do get a
  836. hit from the candidate list you can then simply test this hit against the
  837. remaining candidate distances.  As soon as you reach a candidate distance that
  838. is beyond your hit distance, you stop intersecting.  This candidate list idea
  839. is similar in feel to my Light Buffer lists and Jim Arvo's 5D lists.
  840.  
  841. The trick in all this is to make sure your bounding boxes do not fit too
  842. tightly that a pixel makes a difference:  this is easy enough to calculate for
  843. eye rays.  - EAH]
  844.  
  845.  
  846. --------
  847.  
  848.                 Light and Such
  849.                       or
  850.  
  851.               "Something's REALLY wrong,
  852.                with Bui-Thui Phong"
  853.  
  854.     (I think that's the guys name, and since Bui-Thui is his last name,
  855.      Bui-Thui shading is more appropriate than Phong shading, but...)
  856.  
  857.                    By Haakan
  858.  
  859. I have been dissatisfied with Phong's shading model for quite some time, since
  860. it does not accurately enough apply to reality.  There is at least two effects
  861. in 'real life' that i think is important enough to be mad att ol' mr Phong.  I
  862. have called these 'The Rough bug' and 'The nonlinearity bug'
  863.  
  864. * The Rough bug
  865.  
  866. There is many many ways to see The Rough bug in action in real life, and many
  867. poems have been written about the biggest proof about The Rough bug's, many
  868. lovers have been sitting under it, many songs written about it, and many a
  869. astronomer hase gazed upon it:  The Moon.
  870.  
  871. Let's get out late at night, and trying to look straight up.  You will see the
  872. moon, or half of it, or a third, or nothing ("Half moon tonight.  At least
  873. it's better than no moon at all" - Fortune program) But does this moon look
  874. like a Phong shaded sphere?  Were is the ambient, diffuse, and above all,
  875. specular light?  What you (and I) see, is darkness, darkness, more darkness,
  876. and smack, white moon surface, more white moon surface, swack, Darkness,
  877. darkness...  Who stole Kd and Ka?
  878.  
  879. The answer lies in the texture of the moon's surface.  It's really a VERY
  880. large amount of small objects, stones, rocks, sand, mountains, e.t.c.  So, any
  881. given spot upon the moon surface, will have normal vectors pointing in every
  882. possible direction, and (using Phong in a small scale) will be shaded (almost)
  883. equally, until, of course, it's in shadow!  This is The Rough Bug, Rough sur-
  884. faces are subject to this effect, and the Phong diffuse component gets more
  885. and more out-of-sync with the actual surface as the surface get's rougher.
  886.  
  887. Some questions emerge:
  888.  
  889. Q: Is there any way to let a phong-type shading model take this into account,
  890.    without having to model the surface exactly, either in actual geometry or
  891.    as a bump map?
  892.  
  893. Another example of this bug you may find outside, at sunset (or almost sunset)
  894. if you stand on a large, flat surface covered with sand, dirt, concrete or
  895. something similar.  Looking towards the setting sun, the surface you are stan-
  896. ding on is darker than when you look away from the sun, by the same reason,
  897. the surface's Roughness.  Small rocks and stuff reflect the sun as you look
  898. away from it (by 'it' i refer to the sun, not the rocks.  You will not see
  899. anything if you look away from the rocks :-) and does not as you look into it
  900. (same 'it').  So much for Specular reflection.  Perhaps some kind of inverted
  901. specular reflection....??
  902.  
  903. * The Non Linearity Bug
  904.  
  905. Without having ANY physicists backing me up, I dare claim that the (very
  906. linear) equation of the standard Ray Tracing reflection model is goddamnwrong!
  907. I was wearing a ring the other day, sitting in front of a window, looking out
  908. into the sun.  Since my mind is constantly on RayTracing, i saw the reflection
  909. in the window of the sun reflecting in my ring.  I didn't see myself, nor the
  910. ring, not even the room I was in, reflecting in the window glass, only the
  911. (very bright) reflection of the ring (Perhaps the window used adaptive tree
  912. pruning, filtering away all reflections below 0.1?  Nah...don't think so :-)
  913.  
  914. Another example was when a friend of mine was standing in front of the very
  915. same window, but it was very very late at night, and the window was black.
  916. But he was backlit by the light from the room, and as I observed his
  917. reflection in the glass, I saw it had somehow higher contrast then my direct
  918. vision of him standing there.  The dark parts of his face (where the shadow of
  919. his nose fell, f'rinstance) was pitch black in the reflection, but the tip of
  920. the very same nose, being lit from behind, appeared very bright in the
  921. reflection.  There were no such differences in luminosity between nose-tip and
  922. nose shadow in the true image of him, not even from the windows viewpoint,
  923. something I verified by crawling up between the window and him, observing him
  924. accurately (with him thinking I was a complete fool -- which I am).
  925.  
  926. A question emerges:
  927.  
  928. Q: Can this 'non linearity' of reflected images somehow be imported into
  929.    the raytracing algorithm, or is this a local effect in the human eye?
  930.    (Perhaps in MY eyes only... ?)
  931.  
  932. ======== USENET cullings follow ===============================================
  933.  
  934. Summary: Uniform Random Distribution of Points on Sphere's Surface,
  935.     Marshall Cline, (cline@cheetah.ece.clarkson.edu (Marshall Cline)
  936.     Organization: ECE Dept, Clarkson Univ, Potsdam, NY
  937.  
  938. The original problem was:
  939. > I need to uniformly(!) spray a sphere's surface with randomly located dots.
  940. > We can assume the sphere has radius R and is centered at the origin.
  941.  
  942. SOLUTION #1 (by far the most popular):
  943. > Choose 3 Uniform random values: (rand(-R,R), rand(-R,R), rand(-R,R)).
  944. > If this is inside the sphere, project that vector onto the sphere's surface.
  945.     (Sorry I have no references; many many people suggested this)
  946.  
  947. SOLUTION #2:
  948. > Choose 3 Gaussian randoms: <Normal(0,1), Normal(0,1), Normal(0,1)>
  949. > Project this vector onto the sphere's surface.
  950.     bill@stat.washington.edu (Bill Dunlap, Statistics, U. Washington)
  951.     jd@shamu.wv.tek.com (JD)
  952.  
  953. (Projecting vector <x,y,z> onto the sphere's surface is done by dividing
  954. each component by sqrt of sum of squares (ie: the vector's length).)
  955.  
  956. SOLUTION #3:
  957. > Pick a random latitude by the inverse sine of a number uniformly
  958. > distributed over [-1,1].  Pi times another such random number gives
  959. > you a random longitude, and you're done.
  960.     dougm@rice.edu (Doug Moore)
  961.  
  962. Several other solutions suggested dividing the sphere's surface into small
  963. patches and projecting uniformly into a randomly chosen patch.
  964.  
  965. Thanks to all who answered.
  966. Marshall Cline
  967.  
  968. PS: I'm implementing this on the Connection Machine.  The SIMD nature of
  969. the CM makes the first soln difficult, since each processor will have to
  970. wait until that last straggler finds a point inside the sphere.  There are
  971. ways around this, like a list of cached 3-space points in each processor,
  972. but there's always a chance that one processor's list will be very short.
  973. Thus I'm going to try the Normal(0,1) solution first.
  974.  
  975. PPS: paul@hpldola.HP.COM (Paul Bame) suggested a method (simulated annealing)
  976. which would "evenly distribute" points on the sphere's surface.  Although my
  977. app requires a uniform random distribution, I'm posting this as it may be
  978. appealing (though slow) for someone who wants evenly distributed points.
  979.  
  980. -------------------------------------------------------------------------------
  981.  
  982. Ray Tracing & Radiosity, by Frank Vance (fvance@airgun.wg.waii.com)
  983. Organization: Western Geophysical, Houston
  984.  
  985. The SIGGRAPH '87 proceedings contain three articles (see biblio. below)
  986. which, taken as a whole, seem to imply that image synthesis will have to
  987. combine both ray tracing and radiosity in order to be able to accurately
  988. render images that contain many "real-world" phenomena.  Two of the papers
  989. point out the difficulty of using ray tracing to render such things as
  990. atmospheric scattering and "participating media".
  991.  
  992. I have not seen any further discussion of this view (although I have not yet
  993. seen the SIGGRAPH '89 Proceedings [go easy on me, OK?]), and am wondering what
  994. other researchers, particularly die-hard ray tracers, thought of this.
  995. Can ray tracing correctly render such things without resorting to radiosity
  996. tricks?  Or is the distinction between ray tracing and radiosity
  997. essentially artificial?  What's your opinion?
  998.  
  999. Bibliography:
  1000.  All below from SIGGRAPH '87 Proceedings a.k.a. Computer Graphics, July 1987,
  1001.    v.21 n.4
  1002.  
  1003.     Wallace, John R.; Michael F. Cohen; Donald P. Greenberg
  1004.     "A Two-Pass Solution to the Rendering Equation: A Synthesis
  1005.      of Ray Tracing and Radiosity Methods", pp 311-320
  1006.  
  1007.     Rushmeier, Holly E.; Kenneth E. Torrance
  1008.     "The Zonal Method for Calculating Light Intensities in the
  1009.      Presence of a Participating Medium", pp 293-302
  1010.  
  1011.     Nishita, Tomoyuki; Yasuhiro Miyawaki; Eihachiro Nakamae
  1012.     "A Shading Model for Atmospheric Scattering Considering
  1013.     Luminous Intensity Distribution of Light Sources", pp 303-310
  1014.  
  1015. --------
  1016.  
  1017. Re: Ray Tracing & Radiosity, by Mark VandeWettering (markv@gauss.Princeton.EDU)
  1018.  
  1019. What I think SHOULD be implied is that normal raytracing techniques are
  1020. inadequate to solve a wide variety of lighting situations, particularly those
  1021. which deal with solutions to the "ambient" light contribution, diffuse
  1022. interreflection, participating media, or color bleeding.
  1023.  
  1024. This doesn't mean that raytracing can't be used to solve problems like this.
  1025. As a matter of fact, radiosity can be implemented quite simply using a
  1026. raytracer rather than a zbuffer-er for the hemicube calculations.  Raytracing
  1027. was a part of Holly Rushmeier's participating media radiosity solution, where
  1028. rays were used to perform spatial line integrals of the lighting equation.  If
  1029. you examine the 88 and 89 Siggraph proceedings, you will see that many
  1030. researchers have shifted to raytracing-like approaches to implement radiosity
  1031. solutions.
  1032.  
  1033. >Can ray tracing correctly render such things without resorting to radiosity
  1034. >tricks?  Or is the distinction between ray tracing and radiosity
  1035. >essentially artificial?  What's your opinion?
  1036.  
  1037. The distinctions aren't artificial, but they are subtle.  For a while,
  1038. radiosity meant using matrix equations to solve energy transfer between
  1039. Lambertian reflectors.  Later, the n^2 memory requirements were relaxed by
  1040. using progressive radiosity, and the algorithm became practical and
  1041. competitive with other methods.  Now, integrations of raytracing and radiosity
  1042. are beginning to show further improvements in both speed and the kinds of
  1043. situations they cover (specular reflection).  And you can be sure that there
  1044. will continue to be radiosity papers in THIS years Siggraph too.  (I can
  1045. hardly wait!)
  1046.  
  1047. Raytracing is generally conceived to offer solutions to precisely the
  1048. situations where early radiosity solutions failed:  environments with highly
  1049. specular environments.  It used to be thought that raytracing was too
  1050. expensive, but improvements in hardware and in algorithms have made raytracing
  1051. tractable and attractive.
  1052.  
  1053. Now, I believe that most algorithms "of the future" will have some sort of a
  1054. raytracing core to them, if not for modelling light interactions then probably
  1055. just for checking visibility of points.
  1056.  
  1057. How 'bout anyone else?  Any more ideas?
  1058.  
  1059. -------------------------------------------------------------------------------
  1060.  
  1061. Ray-Tracing the Torus, by Prem Subrahmanyam (prem@geomag.gly.fsu.edu)
  1062.  
  1063. Ok, I've contributed my quadric ray-tracing code.  Now, if someone could tell
  1064. me how to do the above, I would greatly appreciate it.  I know it is a 4th
  1065. order equation, but I have not even succeeded in locating the equation for the
  1066. torus in my math textbooks (except for a spherical coordinate version--and I
  1067. don't want to try to convert).  Any help would be appreciated.
  1068.  
  1069. [this has been answered a few times already in the RT News, but I found Bob
  1070. Weber's reference of interest.  He also gives a taste of Pat's explanation
  1071. -- EAH]
  1072.  
  1073. --------
  1074.  
  1075. Reply from Bob Webber (webber@fender.rutgers.edu):
  1076. Organization: Rutgers Univ., New Brunswick, N.J.
  1077.  
  1078. For planar curves we have J.  Dennis Lawrence's A Catalog of Special Plane
  1079. Curves (Dover 1972) to satisfy those times when one wakes up in the middle of
  1080. the night, racking one's mind trying to remember the equation for the
  1081. hippopede.  However, for 3-d, the best I have seen is Pat Hanrahan's A Survey
  1082. of Ray-Surface Intersection Algorithms that appears in Andrew Glassner's An
  1083. Introduction to Ray Tracing (Academic Press 1989).  There we find, among other
  1084. things, the equation for a torus as:
  1085.  
  1086.    (x**2 + y**2 + z**2 - (a**2 + b**2))**2 = 4 a**2 (b**2 - z**2)
  1087.  
  1088. This describes a torus centered at the origin defined by a circle of radius b
  1089. being swept along a center defined by a circle of radius a.  It is derived
  1090. from considering the intersection of a plane with a torus that yields the two
  1091. circles:
  1092.  
  1093.    ((x - a)**2 + z**2 - b**2)((x + a)**2 + z**2 - b**2) = 0
  1094.  
  1095. [if you are unfamiliar with this construction, it is worthwhile pausing here
  1096. and savouring how this equation actually works -- sometimes the equations are
  1097. prettier than the pictures] and then spinning this intersection by replacing
  1098. x**2 with x**2 + y**2 (after some algebraic simplification, which converted
  1099. the above to:
  1100.  
  1101.      (x**2 + z**2 - (a**2 + b**2))**2 = 4 a**2 (b**2 - z**2)
  1102.  
  1103. ).  The section includes a reference to an unpublished 1982 note by Hanrahan
  1104. entitled:  Tori:  algebraic definitions and display algorithms.  The general
  1105. scheme for a number of variations on the torus is to start with a quartic
  1106. curve of the form f(x**2,y)=0 and then substitute x**2+y**2 for x**2 and z
  1107. for y.
  1108.  
  1109. -------------------------------------------------------------------------------
  1110.  
  1111. Need Help on Superquadrics, by Wayne McCormick (wayne@cpsc.ucalgary.ca)
  1112.  
  1113.     A few months ago I read some articles on superquadrics here on
  1114. the net.  It interested me and I decided to try to implement a modeler
  1115. based on superquadric shapes.  Since the inside-outside functions are
  1116. so easy to use in determining intersections and so forth I thought it would
  1117. be somewhat easy to do.  But I stumbled into a small problem.
  1118.  
  1119.     Parametrically, a superellipsoid is defined by
  1120.  
  1121.     x = c(u,e1) * c(v,e2)
  1122.     y = c(u,e1) * s(v,e2)
  1123.     z = s(u,e1)
  1124.  
  1125.     where -pi <= u <= pi, -2pi <= v <= 2pi, and c(u,e1) = cos(u)^e1,
  1126. s(u,e1) = sin(u)^e1.  O.K., this is the easy part.  By varying u and v
  1127. through the ranges we generate a bunch of points on the surface of the
  1128. ellipsoid.  But, the only place that the functions are defined for real
  1129. numbers is in the positive octant because once the sin or cos function
  1130. becomes negative and e1 and/or e2 are not integers, the function moves out
  1131. into the complex plane.
  1132.  
  1133.     Then I tried to calculate everything in the complex plane.  There
  1134. are two problems here.  1) speed, 2) how do you map back to image space?
  1135.  
  1136.     Then in Franklin and Barr's paper on "Faster calculation of
  1137. superquadric shapes", they say that using an explicit equation and reflecting
  1138. 47 times is much faster.  Sure I can see that, but the patch that is
  1139. generated
  1140. by the explicit equation is small and odd shaped, and what 47 directions does
  1141. one have to reflect it?
  1142.  
  1143. --------
  1144.  
  1145. From Robert Skinner (robert@texas.esd.sgi.com)
  1146. Organization: Silicon Graphics Inc., Entry Systems Division
  1147.  
  1148. I'm going to suggest this without poring over the references, so I'll
  1149. apologize ahead of time:
  1150.  
  1151. Try using the same identities for c(u,e) and s(u,e) as for sin() and
  1152. cos():
  1153.  
  1154.     c(-u,e) == c(u,e)
  1155.     s(-u,e) == -s(u,e)
  1156.     s(pi/2 - u, e) = c(u,e)
  1157.     c(pi/2 - u, e) = s(u,e)
  1158.  
  1159. you can make this restriction 0 <= u,v <= pi/2 and solve only the easy
  1160. cases.  This also means that you only have to compute 1/4th of u's
  1161. range, and 1/8 of v's range, a reduction of 32.  Define
  1162. your basic patch over the range above, then define what the other
  1163. ranges would be in terms of that:
  1164.  
  1165. e.g.
  1166.     0 <= v <= pi/2
  1167.     -pi/2 <= u' <= 0        (i.e u' = -u)
  1168.  
  1169.     then
  1170.      x' = c(u',e1) * c(v,e2) = c(u,e1) * c(v,e2) = x
  1171.      y' = c(u',e1) * s(v,e2) = c(u,e1) * s(v,e2) = y
  1172.      z' = s(u',e1) = -s(u,e1) = -z
  1173.  
  1174. so just reflect your basic patch by -1 in the Z to draw this one.
  1175.  
  1176. Repeat for all other sections of the total range.
  1177. This should work, but it looks like you only get 32 sections, not 48.
  1178.  
  1179. -------------------------------------------------------------------------------
  1180.  
  1181. Ray Tracing Penumbral Shadows, Prem Subrahmanyam (prem@geomag.gly.fsu.edu)
  1182. Organization: Florida State University Computing Center
  1183.  
  1184. I would like to hear how people who have done the above have succeeded at
  1185. this.  Presently, I am working with DBW_Render which uses the following basic
  1186. algorithm.
  1187.  
  1188. Find the direction to the light source and determine distance to this source
  1189. (for inverse square shading).  Now, create a random unit vector and scale this
  1190. into the direction to light vector using the radius of the light source as the
  1191. scaling factor.  Test this new vector for shadows, etc.
  1192.  
  1193. This generates very poor shadows except when the anti-aliasing is turned way
  1194. up (6 or greater rays per pixel) since we are either in shadow or not (no
  1195. in-betweens).  Does anyone else have any usable suggestions as to how this can
  1196. be done where we vary the amount of light depending on how much in shadow it
  1197. is (short of firing multiple rays at the light source--pretty much the same as
  1198. anti-aliasing).
  1199.  
  1200. -------------------------------------------------------------------------------
  1201.  
  1202. Ray with Bicubic Patch Intersection Problem, Wayne Knapp
  1203.     (wayneck@tekig5.PEN.TEK.COM)
  1204.     Organization: Tektronix Inc., Beaverton, Or.
  1205.  
  1206. Time for a hard problem.  Anyone have a great idea on how to compute the
  1207. a ray intersection with a general bicubic patch?  The methods I've found in
  1208. papers so far tend to be very slow.  Seems like most papers take one of two
  1209. approaches:
  1210.  
  1211.     1. Sub-divide the patch in many small polygons and ray-trace that.  Works
  1212.        but when you have thousands of patches you can end up with millions of
  1213.        polygons.
  1214.  
  1215.     2. An Iterative numerical approach, chosing a x,y,z point on the ray and
  1216.        checking to see if it intersects the patch by using the x,y,z values
  1217.        in the system of equations given by the four cubic equations forming
  1218.        the patch.  This of coarse normally requires many trys.
  1219.  
  1220. Does anyone have any better ideas?
  1221.  
  1222. --------
  1223.  
  1224. John Peterson (jp@Apple.COM)
  1225. Organization: Apple Computer Inc., Cupertino, CA
  1226.  
  1227. I did my MS thesis on comparing techniques #1 and #2.  #1 was definitely the
  1228. winner, both in terms of speed and robustness.  #2 requires root finding,
  1229. which can have convergence problems (not finding a root, finding the wrong
  1230. root, etc).  Also, it performs the surface evaluation (which is expensive) in
  1231. the very inner loop of the ray tracing process where it is executed literally
  1232. billions of times for a complex image.
  1233.  
  1234. Reducing to polygons first allows the ray tracer to deal strictly with simple,
  1235. fast and stable linear math.  It also does the surface evaluation (to generate
  1236. the polygons) only once as a pre-process.  Once the polygons are generated,
  1237. there are several very effective schemes for reducing the ray-surface search
  1238. problem for large quantities of small, simple primitives (e.g., octrees,
  1239. bounding volume trees, 5D space, etc).
  1240.  
  1241. For the gory details, see "PRT - A System for High Quality Image Synthesis
  1242. of B-Spline Surfaces", MS Thesis, University of Utah, 1988.
  1243.  
  1244. --------
  1245.  
  1246. Lawrence Kesteloot, (lkestel@gmuvax2.UUCP)
  1247. Organization: George Mason Univ. Fairfax, Va.
  1248.  
  1249. Check out the book "An Introduction to Splines for use in Computer Graphics &
  1250. Geometric Modeling", by Richard H. Bartels, John C. Beatty, and Brian A.
  1251. Barsky.  (Morgan Kaufmann Publishers, 1987).  It has a section entitled
  1252. Ray-Tracing B-Spline Surfaces (p. 414).  It goes into several steps to speed
  1253. up the intersection:
  1254.  
  1255. (I have not read this yet.  I'm summarizing as I read.)
  1256.  
  1257.    1.  Refinement Preprocessing - This breaks the image down into many smaller
  1258.      splines.  Each spline covers several 100 pixels.
  1259.  
  1260.    2.  Tree Construction - Break the new (smaller) spline into a bunch of
  1261.      boxes, starting with one box for the whole spline, then break that
  1262.      down (put all this into a tree).  Intersection with boxes is easy.
  1263.      You can find out which of these boxes (check only the leaves of the
  1264.      tree) intersects the ray.  This will give you the starting point for
  1265.      Newton's iterations.
  1266.  
  1267.   3.  Do newton's iteration to find the exact distance.
  1268.  
  1269. I'm sorry if I've made any errors in the above description.  You're going to
  1270. have to get the book, of course, to implement it.  I'm going to implement it
  1271. in my own ray-tracing program in the next few weeks, so I'll post the source
  1272. if anyone is interested.  It seems like a complicated algorithm, but it may
  1273. speed things up quite a bit.  [I never did see the source posted - EAH]
  1274.  
  1275. --------
  1276.  
  1277. Mark VandeWettering (markv@gauss.Princeton.EDU) writes:
  1278.  
  1279. Well, there is another solution to this problem which people haven't fleshed
  1280. out a great deal: generate triangles and raytrace those.
  1281.  
  1282. I hear groans from the audience, but let me put forth the following reasons:
  1283.  
  1284. 1.    ray/bicubic patch intersection IS floating point intensive.  The
  1285.     best figures I have seen quote around 3K floating point operations
  1286.     per ray/patch intersection.  I have a hard time believing you
  1287.     couldn't do better with a good hierarchy scheme + good triangle code.
  1288.  
  1289. 2.    Even if you can convince me that your bicubic patch intersector
  1290.     worked faster than my combination, dicing into triangles is very simple
  1291.     and easy to implement.  The same code could also be used to generate
  1292.     views of nearly any parametric surface with minimal modification.
  1293.  
  1294. There are (of course) some difficulties.  You would like to subdivide
  1295. appropriately, which means being careful about silhouette edges and shadow
  1296. edges.  Barr and Von Herzen had an excellent paper in the 1989 siggraph to
  1297. illustrate how to implement subdivision.  You might want to check it out.
  1298.  
  1299. (Of course, all this is moot, cuz I never HAVE managed to implement
  1300. real ray/patch intersection code)
  1301.  
  1302. --------
  1303.  
  1304. Thomas Williams ({ucbvax|sun}!pixar!thaw) replies:
  1305. Organization: Pixar -- Marin County, California
  1306.  
  1307. Another problem which I haven't seen solved is subdivision for
  1308. reflections or transmissions which magnify the surface intersection
  1309. of this secondary ray.  For example, what is a suitable subdivision
  1310. algorithm for surfaces seen through a magnifying glass?  Adaptive techniques
  1311. that use gradient differentials can generate gillions of unneeded polygons.
  1312. Also the continuity you lose by approximating surfaces with triangles for
  1313. curved objects with more than one transmitting surface (like a bottle,
  1314. or thick glass) can cause some pretty horrible artifacts.  If it is
  1315. important to avoid these problems the only way I know that you can do
  1316. it it with ray-surface intersection.
  1317.  
  1318. --------
  1319.  
  1320. Mark VandeWettering (markv@gauss.Princeton.EDU) then replies:
  1321.  
  1322. The problems you list are legitimate.  However, I would counter with the
  1323. following arguments:
  1324.  
  1325. 1. How often do scenes which have magnifications through reflection or
  1326. refraction REALLY occur.  The answer to this question for me was: never.
  1327. Much more difficult is to solve problems with shadow edges, which can
  1328. project edges which are irritatingly linear.  Two things will help
  1329. soften/alleviate problems which shadow edges:
  1330.  
  1331.     a.    using distributed raytracing to implement penumbras.
  1332.         fuzzy boundaries can be more piecewise without causing
  1333.         noticeable effects.
  1334.     b.    We can help eliminate artifacts by treating light sources
  1335.         specially, and subdividing on silhouettes with respect
  1336.         to the light source as well as the eye.
  1337.  
  1338. 2.  Remember, your screen has on the order of 1M pixels.  Each patch
  1339. will probably cover only a vanishingly small fraction of these pixels.
  1340. If a patch covers 100 pixels, any subdivision beyond 10x10 is probably
  1341. overkill.  Use expected screensize as a heuristic to guide subdivision.
  1342.  
  1343. --------
  1344.  
  1345. Thomas Williams ({ucbvax|sun}!pixar!thaw) then replies:
  1346.  
  1347. Don't forget problems with areas of high curvature.  Especially animated
  1348. sequences where specular highlights "dance" on sharply curved edges.  A hybrid
  1349. approach might work well but, you had better have a _lot_ of memory for all
  1350. the polygons you generate.  Thrashing brings the fastest machines to their
  1351. knees.  So, I still think there is a place for ray-surface intersections.
  1352.  
  1353. Of course, I guess which approach you take depends on the audience your
  1354. playing to.
  1355.  
  1356. -------------------------------------------------------------------------------
  1357.  
  1358. Rendering Intersecting Glass Spheres, John Cristy (cristy@eplrx7.uucp)
  1359. Organization: DuPont Engineering Physics Lab
  1360.  
  1361. I am (still) looking for a renderer (raytracer, radiosity, scanline, etc.)
  1362. that can render two intersecting semi-transparent glass spheres and
  1363. realistically show the area of intra-penetration.  I have been looking for a
  1364. couple months now and have not found a renderer that does this well (or at
  1365. all).  Suggestions of public domain or commercial renderers that solve this
  1366. problem was welcome.  Please send Email to cristy@dupont.com.  Thanks in
  1367. advance.
  1368.  
  1369. --------
  1370.  
  1371. Craig Kolb (craig@weedeater.uucp) replies:
  1372. Organization: Yale University Department of Mathematics
  1373.  
  1374. >To accurately model nested objects (for example, if your two
  1375. >spheres had different indices of refraction), you also need to
  1376. >maintain a stack of refraction indices, since you can't assume that
  1377. >when you exit an object, you exit into `air'.
  1378.  
  1379. Rayshade does exactly this.  But there are still a couple of problems with
  1380. rendering intersecting transparent objects.  First, the renderer needs to keep
  1381. track of solid body color in order to achieve the proper "filtering" effect
  1382. of, say, white light passing through green glass and then blue glass.
  1383.  
  1384. The second and more fundamental problem is how to treat the volume
  1385. corresponding to the intersection of the two solids.  Given that solids A and
  1386. B each have a set of properties (solid body color, index of refraction, etc.),
  1387. what properties should be used in rendering the volume (A ^ B)?
  1388.  
  1389. Doing The Right Thing means resorting to CSG techniques so that one can
  1390. specify the properties of (A ^ B) as well as those of A and B.
  1391.  
  1392. -------------------------------------------------------------------------------
  1393.  
  1394. DKBPC Raytracer, Tom Friedel (tpf@jdyx.UUCP)
  1395. Organization: JDyx Enterprises (Atlanta GA)
  1396.  
  1397. The guys on Compuserve seem to have endorsed a (new) ray tracer
  1398. called DKBPC, which is available as source.  It appears to
  1399. support CSG and Textures from what little I've seen.  Has anyone
  1400. evaluated it (i.e., compared it to rayshade, vort, mtv, etc.)  Is it
  1401. archived anywhere?
  1402.  
  1403. -------------------------------------------------------------------------------
  1404.  
  1405. New release of IRIT solid modeller, Gershon Elber (gershon@cs.utah.edu)
  1406. Organization: University of Utah CS Dept
  1407.  
  1408. IRIT is a polygonal C.S.G. based solid modeller originally developed on and
  1409. for the IBM PC family of computers.  Version 1.x has been released about a
  1410. year ago for the IBM PC only.  Since then, it has been ported to unix
  1411. environment (SGI Irix 3.2 and BSD4.3) using X11, and all known bugs has been
  1412. fixed.
  1413.  
  1414. This is release 2.x of the solid modeller and its accompanying utilities which
  1415. include a data viewing program (poly3d), hidden line removal program
  1416. (poly3d-h) and simple renderer (poly3d-r).  Thanks to Keith Petersen, all the
  1417. sources (Ansi C) for these programs (and executables for the IBM PC) are
  1418. available on simtel20.arpa, directory PD1:<MSDOS.IRIT> :
  1419.  
  1420. IRIT.ZIP        Full CSG solid modeller, arbitrary orientation
  1421. IRITS.ZIP       Turbo C ver 2.0 sources for IRIT
  1422. IRITLIBS.ZIP    Libraries for IRIT sources
  1423. POLY3D.ZIP      Display 3D polygonal objects, part of IRIT
  1424. POLY3DS.ZIP     Turbo C ver 2.0 sources for POLY3D
  1425. POLY3D-H.ZIP    Create hidden line removed pict., part of IRIT
  1426. POLY3DHS.ZIP    Turbo C ver 2.0 sources for POLY3D-H
  1427. POLY3D-R.ZIP    Render poly data into GIF images, part of IRIT
  1428. POLY3DRS.ZIP    Turbo C ver 2.0 sources for POLY3D-R
  1429. DRAWFN3D.ZIP    Display 3D parametric surfaces, part of IRIT
  1430. DRAWFN3S.ZIP    Turbo C ver 2.0 sources for DRAWFN3D
  1431.  
  1432. All above sources are for the unix system as well, but DRAW*.ZIP which has not
  1433. been ported (MSDOS only).  In order to unpack ZIP archives in unix environment
  1434. you will need to ftp from directory PD3:<MISC.UNIX> the file UNZIP30.TAR-Z.
  1435.  
  1436. [list of changes deleted - EAH]
  1437.  
  1438. Elber Gershon                            gershon@cs.utah.edu
  1439. 918 University village
  1440. Salt Lake City 84108-1180                Tel: (801) 582-1807 (Home)
  1441. Utah                                     Tel: (801) 581-7888 (Work)
  1442.  
  1443. -------------------------------------------------------------------------------
  1444.  
  1445. Easier Use of Ray Tracers, Philip Colmer, Mark VandeWettering, Jack Ritter
  1446.  
  1447.  
  1448. Philip Colmer (pcolmer@acorn.co.uk) writes:
  1449.  
  1450. As someone who has used QRT and MTV, and is about to try RayShade, could I
  1451. make a couple of suggestions to the authors of these packages, and any other
  1452. budding ray tracer programmers.
  1453.  
  1454. ---------
  1455.  
  1456. Mark VandeWettering (markv@gauss.Princeton.EDU) answers Philip's points:
  1457.  
  1458. In article <...> pcolmer@acorn.co.uk (Philip Colmer) writes:
  1459.  
  1460. >1. Please try and provide an option to produce a quick and dirty outline
  1461. >   image. This would not do any reflections, shadows or any of the other
  1462. >   time consuming elements of ray tracing. Instead, it would just show
  1463. >   where the objects are. This would allow the basic picture to be checked
  1464. >   for accuracy. Not everyone can cope with visualizing a 3D world!
  1465.  
  1466.     Yeah, this should be configurable from within the data file,
  1467.     or via command line options.  Things like raydepth and stuff are
  1468.     not run-time configurable on MTV.
  1469.  
  1470. >2. MTV has a very nice colour database (pinched from X11). How about a
  1471. >   similar database for materials, ie just what ARE the parameters that
  1472. >   should be given for metal, glass and so on?
  1473.  
  1474.     Well, colors are a little easier than things like metals.  We should
  1475.     actually shift from an RGB representation of color to a more
  1476.     realistic wavelength model, and then convert.  Somewhere I have a list
  1477.     compiled by Andrew Glassner of reflection curves for a number of
  1478.     materials.   Perhaps these will work their way into Son of MTV.
  1479.  
  1480. >3. How about a fixed point integer system? This would make ray tracers go
  1481. >   one hell of a lot faster, but I'm not sure if this is a viable option.
  1482.  
  1483.     Guess what folks, this probably won't help.  Mainly because modern
  1484.     machines are spending alot more time to do fp multiplies than integer
  1485.     multiplies.  Note that on a machine like the i860, a double precision
  1486.     multiply can be done every two cycles.  A 32 bit integer multiply
  1487.     takes between four and eleven.  Net result: You lose.
  1488.     Similar things happen with the MIPS R3000.
  1489.  
  1490.     Another big lose for most machines, using single precision fp in
  1491.     C.  Doesn't help one iota in speed for every machine I tested, and
  1492.     hurt the accuracy.
  1493.  
  1494. --------
  1495.  
  1496. Jack Ritter (ritter@versatc.versatec.COM)
  1497. Organization: Versatec, Santa Clara, Ca. 95051
  1498. Summary: speed up tricks for approx ray tracer
  1499.  
  1500. In article <2413@acorn.co.uk> pcolmer@acorn.co.uk (Philip Colmer) writes:
  1501.  
  1502. >1. Please try and provide an option to produce a quick and dirty outline
  1503. >   image.
  1504.  
  1505. I have an option to scale the scene into an arbitrary NXM pixel area.  For
  1506. initial renderings, where I just want to the overall effect, & make sure
  1507. objects don't penetrate each  other, I have found that even a 30X30 pixel
  1508. rendering is revealing.  30X30 sure beats the hell out of 512X512, or whatever
  1509. these darn kids are using these days.
  1510.  
  1511. I also bound objects in screen space, which makes things very fast when you're
  1512. not doing reflections & refractions.  Some fairly complex scenes have taken
  1513. under a minute with all these trick in use.  Screen space bounding is
  1514. described in the upcoming book "Graphics Gems", which will no doubt also
  1515. contain many other speed-up tricks that I will wish I had thought of.
  1516.  
  1517. >3. How about a fixed point integer system? This would make ray tracers go
  1518. >   one hell of a lot faster, but I'm not sure if this is a viable option.
  1519. >
  1520. >     Guess what folks, this probably won't help.  Mainly because modern
  1521. >     machines are spending alot more time to do fp multiplies than integer
  1522.  
  1523. Yes, the latest processors have on-chip floating point, and are fast.
  1524. However, on the processors I have used:  Motorola 68000, 68010, 68020, I have
  1525. found that well thought-out fixed point code always beats the floating point
  1526. coprocessor, algorithm for algorithm.
  1527.  
  1528. -------------------------------------------------------------------------------
  1529.  
  1530. Raytracer Glass, F. Ken Musgrave (musgrave-forest@CS.YALE.EDU)
  1531. Organization: Yale University Computer Science Dept, New Haven CT  06520-2158
  1532.  
  1533. In article <...> pwh@bradley.UUCP writes:
  1534. >
  1535. >What are the spectral properties of glass
  1536. >that I could use in a raytracing program?
  1537. >
  1538. >I've a friend who's been working on the problem
  1539. >for a while now, and it's given some interesting results,
  1540. >but nothing that actually looks like glass....
  1541.  
  1542.   Glass is not so easy to do - I got a Master's degree for doing it!
  1543.  
  1544.   Three things are necessary:  (1) The proper index of refraction (1.5-1.9).
  1545. (2) The proper reflection function - Fresnel's Law.  (3) Dispersion.  Also,
  1546. you should propagate rays spawned by total internal reflection - many ray
  1547. tracers quash such rays outright; this can lead to ugly artifacts in (glass)
  1548. objects with planar surfaces.
  1549.  
  1550.   The first two things can be standard features in a ray tracer, the third is
  1551. uncommon.  There are two published solutions (that I know of):
  1552.  
  1553.     Thomas, S. W., "Dispersive Refraction in Ray Tracing", Visual
  1554.     Computer, vol. 2, no. 1, pp 3-8, Springer Int'l, Jan. '86
  1555.  
  1556.     Musgrave, F. K., "Prisms and Rainbows: a Dispersion Model for
  1557.     Computer Graphics", Proceedings of the Graphics Interface '89,
  1558.     London, Canada, June '89
  1559.  
  1560.   Neither of these references is easy to get.  Perhaps UC Santa Cruz would
  1561. provide a copy of my thesis:
  1562.  
  1563.     Musgrave, F. K., "A Realistic Model of Refraction for Computer
  1564.     Graphics", Master's Thesis, UC Santa Cruz, Santa Cruz CA, Sept. '87
  1565.  
  1566.   As an alternative, I will put the troff sources for my GI paper where you
  1567. can get them via anonymous ftp on weedeater.math.yale.edu - but you won't get
  1568. any of the nice illustrations.
  1569.  
  1570.   At any rate to get dispersion into a ray tracer requires some hacking, and
  1571. will in general slow down the rendering a *lot*.  Thomas & I used quite
  1572. different approaches; his would probably be faster for scenes without much
  1573. dispersion, and vice-versa.
  1574.  
  1575.   A future version of Craig Kolb's RayShade may feature dispersion...  (I'm
  1576. not at liberty to distribute my ray tracer with dispersion.)
  1577.  
  1578. --------
  1579.  
  1580. Michael A. Kelly (mkelly@comix.cs.uoregon.edu) replies:
  1581. [Organization: Department of Computer Science, University of Oregon]
  1582.  
  1583. In article <8600001@bradley> pwh@bradley.UUCP writes:
  1584. >
  1585. >What are the spectral properties of glass
  1586. >that I could use in a raytracing program?
  1587.  
  1588. Try "Color Science" by Wyszecki & Stiles (1982).  I don't have the book with
  1589. me but I'm pretty sure it has the information you need.
  1590.  
  1591. -------------------------------------------------------------------------------
  1592.  
  1593. Ray Intersection with Grid, Rick Speer (speer@boulder.Colorado.EDU)
  1594. Organization: University of Colorado, Boulder
  1595.  
  1596. In article 12598 of comp.graphics, aiadrmi@castle.ed.ac.uk
  1597. (Alasdair Donald Robert McIntyre) writes:
  1598.  
  1599. >  I am trying to raytrace rippling water and need to solve the following
  1600. >  problem:
  1601. >
  1602. >           Given a surface defined by heights on an square grid, find the
  1603. >           closest intersection of a ray with the surface thus defined.
  1604. >
  1605. >  I wonder if anyone knows of an efficient method to do this?
  1606. >
  1607. >  Replies by mail, or to the net.
  1608. >  Thanks in advance
  1609.  
  1610.  
  1611. You might check the following-
  1612.  
  1613. 1. "Shaded Display of Digital Maps", by S. Coquillart and M. Gangnet
  1614.     in IEEE Computer Graphics and Applications V. 4 No. 7 (July 1984),
  1615.     p. 35-42.
  1616.  
  1617. 2. "Vectorized Procedural Models for Natural Terrain: Waves and
  1618.     Islands in the Sunset", by N. Max in Computer Graphics V. 15 No. 3
  1619.     (Proceedings of SIGGRAPH '81), p. 317-324.
  1620.  
  1621. These should give you some good ideas.
  1622.  
  1623. [My own two cents:  Also look at "The Synthesis and Rendering of Eroded Fractal
  1624. Terrains" by F. Kenton Musgrave, Craig E. Kolb, and Robert S. Mace, SIGGRAPH
  1625. 89.  Towards the end they describe their method to ray trace height fields.
  1626. - EAH]
  1627.  
  1628. -------------------------------------------------------------------------------
  1629.  
  1630. Database for DBW-Render, by Prem Subrahmanyam (prem@geomag.fsu.edu)
  1631. Organization: Florida State University Computing Center
  1632.  
  1633. Ok, here is a description file for a trio of balloons over reflective water
  1634. with fractal mountains in the background.  It should be pretty interesting.
  1635.  
  1636.  
  1637. & 0 400
  1638. R 24.0
  1639. a .5
  1640. b .8 .4 .4
  1641. e 0 10 100  0 -5 -200  0 1 0
  1642. w  0 0 -200  7 .1 1 0.00
  1643. w 0 0 0  5 .2 1 0.00
  1644. w 0 0 200  20 .4 1 0.50
  1645. w 200 0 0  2  .1  1  1.00
  1646. w -200 0 0  10 .15  1 1.00
  1647. w 50 0 0  6 .2 1 0.00
  1648. w 30 4 60  15 .3 1 .75
  1649. l  1 1 1  2 10 5
  1650. g .5 0 .8  15 15
  1651. f 4  0.1 0.5 0.7  3
  1652. f 4  .7 .6 .6  3
  1653. f 4  .5 .5 .7  3
  1654. {s 50 .2 0 1  0 0 0  .3 .3 .3  .6 .8 .2  0 29 0  10
  1655. {t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  -9 24.2 0  1.7 0 5.3  5.3 -10.2 1.2
  1656.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  -7.3 24.2 5.3  4.5 0 3.3  5 -10.2
  1657. -2
  1658.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  -2.8 24.2 8.6  5.6 0 0  2.8 -10.2
  1659. -4.7
  1660.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  2.8 24.2 8.6  4.5 0 -3.3  -.5 -10.2
  1661. -5.4
  1662.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  7.3 24.2 5.3  1.7 0 -5.3  -3.6
  1663. -10.2 -4.1
  1664.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  -2.3 14 3.2 -1.4 0 -2
  1665. -5 10.2 2
  1666.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  0 14 3.9 -2.3 0 -.7  -2.8 10.2 4.7
  1667.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  2.3 14 3.2  -2.3 0 .7  .5 10.2 5.4
  1668.  t 50 .2 0 1  0 0 0  .1 .1 .1  .6 .87 .2  3.7 14 1.2 -1.4 0 2  3.6 10.2
  1669. 4.1}
  1670. {q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  0 14 3.9  .4 0 0  0 -8 0
  1671.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  3.7 14 1.2  .4 0 0  0 -8 0
  1672.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -3.7 14 1.2  .4 0 0  0 -8 0
  1673.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -.8 14 -3.9  .4 0 0  0 -8 0}
  1674. {q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -3.7 6 1.2  3.7 0 2.7  0 -5 0
  1675.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  0 6 3.9  3.7 0 -2.7  0 -5 0
  1676.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -3.7 6 1.2  2.9 0 -2.7  0 -5 0
  1677.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -.8 6 -3.9  4.5 0 2.7  0 -5 0}}
  1678.  
  1679.  r 4 0 .55 1  0 0 0  0 0 0  .1 0 0   0 1 0   1 0 0  0 0 1  0  200
  1680.  
  1681. {s 70 .2 0 1  0 0 0  .3 .3 .3  .5 0 .2  20 30 -10  10
  1682. {t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  11 25.2 -10  1.7 0 5.3  5.3 -10.2 1.2
  1683.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  12.7 25.2 -4.7  4.5 0 3.3  5 -10.2
  1684. -2
  1685.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  17.2 25.2 -1.4  5.6 0 0  2.8 -10.2
  1686. -4.7
  1687.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  22.8 25.2 -1.4  4.5 0 -3.3  -.5 -10.2
  1688. -5.4
  1689.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  27.3 25.2 -4.7  1.7 0 -5.3  -3.6
  1690. -10.2 -4.1
  1691.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  17.7 15 -6.8 -1.4 0 -2
  1692. -5 10.2 2
  1693.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  20 15 -6.1 -2.3 0 -.7  -2.8 10.2 4.7
  1694.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  22.3 15 -6.8  -2.3 0 .7  .5 10.2 5.4
  1695.  t 70 .2 0 1  0 0 0  .1 .1 .1  .5 0 .2  23.7 15 -8.8 -1.4 0 2  3.6 10.2
  1696. 4.1}
  1697. {q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  20 15 -6.1  .4 0 0  0 -8 0
  1698.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  23.6 15 -8.8  .4 0 0  0 -8 0
  1699.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  16.3 15 -8.8  .45 0 0  0 -8 0
  1700.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  19.2 15 -13.9  .4 0 0  0 -8 0}
  1701. {q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  16.3 7 -11.2  3.7 0 2.7  0 -5 0
  1702.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  20 7 -6.1  3.7 0 -2.7  0 -5 0
  1703.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  16.3 7 -8.8  2.9 0 -2.7  0 -5 0
  1704.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  19.2 7 -13.9  4.5 0 2.7  0 -5 0}}
  1705.  
  1706. {s 5 .2 0 1  0 0 0  .3 .3 .3   0 .5 .8  -30 40 -20  10
  1707. {t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -39 35.2 -20  1.7 0 5.3  5.3 -10.2 1.2
  1708.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -37.3 35.2 -14.7  4.5 0 3.3  5 -10.2
  1709. -2
  1710.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -32.8 35.2 -11.4  5.6 0 0  2.8 -10.2
  1711. -4.7
  1712.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -27.2 35.2 -11.4  4.5 0 -3.3  -.5 -10.2
  1713. -5.4
  1714.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -22.7 35.2 -14.7  1.7 0 -5.3  -3.6
  1715. -10.2 -4.1
  1716.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -32.2 25 -16.2 -1.4 0 -2
  1717. -5 10.2 2
  1718.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -30 25 -16.1 -2.3 0 -.7  -2.8 10.2 4.7
  1719.  
  1720.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -27.7 25 -16.8  -2.3 0 .7  .5 10.2 5.4
  1721.  t 5 .2 0 1  0 0 0  .1 .1 .1   0 .5 .8  -26.3 25 -18.8 -1.4 0 2  3.6 10.2
  1722. 4.1}
  1723. {q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -30 25 -16.1  .4 0 0  0 -8 0
  1724.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -26.4 25 -18.8  .4 0 0  0 -8 0
  1725.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -33.7 25 -18.8  .4 0 0  0 -8 0
  1726.  q 0 1 0 1  0 0 0  .1 .1 .1   .1 .1 .1  -30.8 25 -23.9  .4 0 0  0 -8 0}
  1727. {q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -33.7 17 -18.8  3.7 0 2.7  0 -5 0
  1728.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -30 17 -16.1  3.7 0 -2.7  0 -5 0
  1729.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -33.7 17 -18.8  2.9 0 -2.7  0 -5 0
  1730.  q 3 .5 0 1  0 0 0  .1 .1 .1  .3 .4 .5  -30.8 17 -23.9  4.5 0 2.7  0 -5 0}}
  1731.  x 60 0 0 1  0 0 0  .1 .1 .1  .4 .4 .4  -100 0 -170  0 30 -200  100 0 -170
  1732.  x 61 0 0 1  0 0 0  .1 .1 .1  .4 .4 .4  -50 0 -170  -150 50 -132  -180 0 -85
  1733.  x 62 0 0 1  0 0 0  .1 .1 .1  .4 .4 .4  50 0 -170  160 30 -132  180 0 -85
  1734.  k .8 0 .9  5 5 5  0 0 0
  1735.  
  1736. -------------------------------------------------------------------------------
  1737. END OF RTNEWS
  1738.